const Role = require('../models/Role');

// 创建角色
exports.createRole = async (req, res) => {
  try {
    const role = new Role(req.body);
    await role.save();
    res.json({ message: '角色创建成功', data: role });
  } catch (error) {
    res.status(500).json({ message: '角色创建失败', error: error.message });
  }
};

// 获取角色列表
exports.getRoles = async (req, res) => {
  try {
    const roles = await Role.find().populate('permissions');
    res.json({ message: '获取角色列表成功', data: roles });
  } catch (error) {
    res.status(500).json({ message: '获取角色列表失败', error: error.message });
  }
};

// 分页获取角色列表
exports.getRolePage = async (req, res) => {
  try {
    const { page = 1, limit = 10 } = req.query;
    const skip = (page - 1) * limit;

    const roles = await Role.find()
      .skip(skip)
      .limit(limit)
      .populate('permissions');

    const totalRoles = await Role.countDocuments();

    res.json({
      message: '获取角色分页数据成功',
      data: {
        roles,
        currentPage: page,
        totalPages: Math.ceil(totalRoles / limit),
        totalRoles
      }
    });
  } catch (error) {
    res.status(500).json({ message: '获取角色分页数据失败', error: error.message });
  }
};

// 根据 ID 获取角色
exports.getRoleById = async (req, res) => {
  try {
    const role = await Role.findById(req.params.id).populate('permissions');
    if (!role) {
      return res.status(404).json({ message: '角色未找到' });
    }
    res.json({ message: '获取角色信息成功', data: role });
  } catch (error) {
    res.status(500).json({ message: '获取角色信息失败', error: error.message });
  }
};

// 更新角色
exports.updateRole = async (req, res) => {
  try {
    const role = await Role.findByIdAndUpdate(req.params.id, req.body, { new: true });
    if (!role) {
      return res.status(404).json({ message: '角色未找到' });
    }
    res.json({ message: '角色更新成功', data: role });
  } catch (error) {
    res.status(500).json({ message: '角色更新失败', error: error.message });
  }
};

// 删除角色
exports.deleteRole = async (req, res) => {
  try {
    const role = await Role.findByIdAndDelete(req.params.id);
    if (!role) {
      return res.status(404).json({ message: '角色未找到' });
    }
    res.json({ message: '角色删除成功' });
  } catch (error) {
    res.status(500).json({ message: '角色删除失败', error: error.message });
  }
};